数据库索引

1
2
3
4
5
6
7
8
9
def load():
print 'load'
for i in range(2):
yield i
gen = load()
print 'loop...'
for i in gen:
print i

输出

1
2
3
4
loop...
load
0
1

当你调用这个函数的时候,函数内部的代码并不立马执行 ,这个函数只是返回一个生成器对象。函数内的代码什么时候执行呢?当你使用for进行迭代的时候。

第一次迭代中你的函数会执行,从开始到达 yield 关键字,然后返回 yield 后的值作为第一次迭代的返回值. 然后,每次执行这个函数都会继续执行你在函数内部定义的那个循环的下一次,再返回那个值,直到没有可以返回的。